﻿<%@ Page Language="C#" MasterPageFile="~/TestSystem/TestSystemMain.Master" ValidateRequest="false" AutoEventWireup="true" Inherits="Admin_ManageQuizes" Title="Untitled Page" Codebehind="ManageQuizes.aspx.cs" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>

<asp:Content ID="MngQuizes" ContentPlaceHolderID="TsContent" Runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<div class="admin-panel">
    <asp:ListView runat="server" ID="lvwQuizes" DataKeyNames="QuizID"  ConvertEmptyStringToNull="true" 
        InsertItemPosition="LastItem" DataSourceID="quizesObjSource" 
        onitemcommand="lvwQuizes_ItemCommand" 
        onitemdeleted="lvwQuizes_ItemDeleted" 
        oniteminserted="lvwQuizes_ItemInserted" 
        onitemupdating="lvwQuizes_ItemUpdating" 
        onitemdatabound="lvwQuizes_ItemDataBound">
        <LayoutTemplate>
            <div class="command-buttons">
                <a style="padding-left:10px;" href="#insert">Новий тест</a>
                <a style="padding-left:10px;" href="ManageSubjects.aspx">Назад</a>
            </div>
            <div ID="itemPlaceholder" runat="server">
            </div>
        </LayoutTemplate>
        <ItemTemplate>
            <div class="item-div">
                <div class="item">
                    <p><span id="Span1" runat="server" visible='<%# Eval("Deleted") %>' class="item-removed">&nbsp;(видалено)</span></p>
                    <%# Eval("Title") %>
                    <p><%# Eval("Description") %></p>
                    <p><span class="prop-label">Доданий:</span><%# Eval("AddedDate") %></p>
                    <p><span class="prop-label">Додав:</span><%# Eval("AddedBy") %></p>
                    <p><span class="prop-label">Пройдений:</span><%# Eval("PassedTimes") %></p>
                    <p><span class="prop-label">Провалений:</span><%# Eval("FailedTimes") %></p>
                    <p><span class="prop-label">Кількість запитань:</span><%# Eval("QuestionsCount") %></p>
                    <p><span class="prop-label">Час на тест:</span><%# Convert.ToInt32(Eval("TimePerQuiz"))/60 %>&nbsp;хв</p>
                    <p><span class="prop-label">Можна набрати всього:</span><%# Eval("MaxScores") %>&nbsp;балів</p>
                    <p><span class="prop-label">Необхідно набрати:</span><%# Eval("ScoreToPass") %>&nbsp;балів</p>
                    <p><span class="prop-label">Кількість питань на рівень:</span><asp:Label runat="server" ID="lblQuestPerLevel" Text='<%# Eval("LevelsPercentage") %>'></asp:Label></p>
                    <p>
                        <span class="prop-label">Активний:</span><asp:CheckBox runat="server" Checked='<%# Eval("Active") %>' Enabled="false" /> 
                        <span class="prop-label">Зберігати відповіді:</span><asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("SaveUserAnswers") %>' Enabled="false" />
                        <span class="prop-label">Можна змінювати відповіді:</span><asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Eval("AllowReAnswer") %>' Enabled="false" />
                        <span class="prop-label">Використовувати таймер:</span><asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Eval("UseTimer") %>' Enabled="false" />
                    </p>
                    <div class="command-buttons">
                        <asp:LinkButton ID="btnEdit" runat="server" CommandName="Edit" CssClass="command-button" Text="Редагувати"></asp:LinkButton>
                        <asp:LinkButton ID="btnDelete" runat="server" CommandName="Delete" CssClass="command-button" Text="Видалити"
                         OnClientClick="return confirm('Ви впевнені, що хочете видалити даний тест ?') == true"></asp:LinkButton>
                        <asp:LinkButton ID="btnRestore" runat="server" CommandArgument='<%# Eval("QuizID") %>' CommandName="Restore" CssClass="command-button" Text="Відновити" Visible='<%# Eval("Deleted") %>'></asp:LinkButton>
                        <asp:LinkButton ID="btnTests" runat="server" CommandName="Tests" CommandArgument='<%#Eval("QuizID") %>' Text="Запитання" CssClass="command-button"></asp:LinkButton>
                        <asp:LinkButton ID="btnAddTest" runat="server" CommandName="AddTest" CssClass="command-button" Text="Додати запитання" CommandArgument='<%# Eval("QuizID") %>'></asp:LinkButton>
                    </div>
                </div>
            </div>
        </ItemTemplate>
        <EditItemTemplate>
            <div class="edititem-div">
                <div class="item">
                    <p><span class="prop-label">Назва тесту</span>
                    <asp:TextBox ID="txtTitle1" runat="server" MaxLength="50" CssClass="txtMedium" ValidationGroup="edit" Text='<%# Bind("Title") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtTitle1" ErrorMessage="Необіхідно ввести назву тесту" ValidationGroup="edit">*</asp:RequiredFieldValidator>
                    </p>
                    <p><span class="prop-label">Опис</span>
                    <asp:TextBox runat="server" ID="txtDesc1" TextMode="MultiLine" ValidationGroup="edit" Text='<%# Bind("Description") %>'></asp:TextBox>
                    </p>
                    <p><span class="prop-label">Доданий</span>
                    <asp:TextBox runat="server" ID="txtAddedDate" ValidationGroup="edit" CssClass="txtSmall" Text='<%# Bind("AddedDate") %>'></asp:TextBox>
                    <ajax:CalendarExtender ID="CalendarExtender1" Animated="true" runat="server" TargetControlID="txtAddedDate"></ajax:CalendarExtender>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtAddedDate" ValidationGroup="edit" ErrorMessage="Необхідно ввести дату створення тесту">*</asp:RequiredFieldValidator>
                    </p>
                    <p><span class="prop-label">Кількість запитань</span>
                    <asp:TextBox runat="server" ID="txtQCount" CssClass="txtSmall" Text='<%# Bind("QuestionsCount") %>' ValidationGroup="edit"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ValidationGroup="edit" ErrorMessage="Необхідно ввести кількість запитань" ControlToValidate="txtQCount">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator1" runat="server" ValidationGroup="edit" ErrorMessage="Кількість запитань від 1 до 150" Type="Integer" MaximumValue="150" MinimumValue="1" ControlToValidate="txtQCount">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Використовувати таймер</span>
                    <asp:CheckBox runat="server" ID="chkUseTimer" Checked='<%# Bind("UseTimer") %>' />
                    </p>
                    <p><span class="prop-label">Час на тест</span>
                    <asp:TextBox runat="server" ID="txtTimePerQuiz" CssClass="txtSmall" Text='<%# Bind("TimePerQuiz") %>' ValidationGroup="edit"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtTimePerQuiz" ValidationGroup="edit" ErrorMessage="Необхідно ввести час на проходження тесту">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator2" runat="server" ValidationGroup="edit" ControlToValidate="txtTimePerQuiz" Type="Integer" MaximumValue="86400" MinimumValue="60" ErrorMessage="Час для проходжння тесту від 60с до 24 год.">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Можна всього набрати</span>
                    <asp:TextBox runat="server" ID="txtMaxScores" CssClass="txtSmall" Text='<%# Bind("MaxScores") %>' ValidationGroup="edit"></asp:TextBox>  
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="txtMaxScores" ValidationGroup="edit" ErrorMessage="Максимальна кількість балів для тесту обовязкова">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator3" runat="server" ControlToValidate="txtMaxScores" ValidationGroup="edit" Type="Integer" MaximumValue="1000" MinimumValue="1" ErrorMessage="Максимальна кількість балів 1 до 1000">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Необхідно набрати</span>
                    <asp:TextBox runat="server" ID="txtScoreToPass" CssClass="txtSmall" Text='<%# Bind("ScoreToPass") %>' ValidationGroup="edit"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="txtScoreToPass" ValidationGroup="edit" ErrorMessage="Необхідно ввести кількість балів">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator4" runat="server" ControlToValidate="txtScoreToPass" ValidationGroup="edit" Type="Integer" MaximumValue="1000" MinimumValue="1" ErrorMessage="Кількість балів для проходження від 1 до 1000">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Активний</span>
                    <asp:CheckBox runat="server" ID="chkActive1" Checked='<%# Bind("Active") %>' /></p>
                    <p><span class="prop-label">Зберігати відповіді користувача</span>
                    <asp:CheckBox runat="server" ID="chkSaveAnswers1" Checked='<%# Bind("SaveUserAnswers") %>' />
                    </p>
                    <p><span class="prop-label">Перенести в категорію:</span>
                    <asp:DropDownList runat="server" ID="ddlSubjects" DataValueField="SubjectId" DataTextField="Name"></asp:DropDownList>
                    </p>
                    <p><span class="prop-label">Дозволити змінювати відповіді</span>
                    <asp:CheckBox runat="server" ID="chkAllowReAnswer" Checked='<%# Bind("AllowReAnswer") %>' />
                    </p>
                    <div id="validation-summary">
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="Виправте наступні помилки:" DisplayMode="List" ValidationGroup="edit" />
                    </div>
                    <div class="command-buttons">
                        <asp:LinkButton ID="btnUpdate" runat="server" CommandName="Update" Text="Оновити" CssClass="command-button" ValidationGroup="edit" />
                        <asp:LinkButton ID="btnCancel" runat="server" CommandName="Cancel" CssClass="command-button" Text="Відмінити" />
                    </div>
                </div>
            </div>
        </EditItemTemplate>
        <InsertItemTemplate>
            <div class="item-div">
                <div class="item">
                    <a id="insert"></a>
                    <p><span class="prop-label">Назва тесту</span>
                    <asp:TextBox ID="txtTitle" runat="server" MaxLength="50" CssClass="txtMedium" ValidationGroup="insert" Text='<%# Bind("Title") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtTitle" ErrorMessage="Необіхідно ввести назву тесту" ValidationGroup="insert">*</asp:RequiredFieldValidator>
                    </p>
                    <p><span class="prop-label">Опис</span>
                    <asp:TextBox runat="server" ID="txtDesc1" ValidationGroup="insert" TextMode="MultiLine" Text='<%# Bind("Description") %>'></asp:TextBox>
                    <p>
                    <span class="prop-label">Кількість запитань</span>
                    <asp:TextBox runat="server" ID="txtQCount" CssClass="txtSmall" Text='<%# Bind("QuestionsCount") %>' ValidationGroup="insert"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ValidationGroup="insert" ErrorMessage="Необхідно ввести кількість запитань" ControlToValidate="txtQCount">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator1" runat="server" ValidationGroup="insert" ErrorMessage="Кількість запитань від 1 до 150" Type="Integer" MaximumValue="150" MinimumValue="1" ControlToValidate="txtQCount">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Використовувати таймер</span>
                    <asp:CheckBox runat="server" ID="chkUseTimer" Checked='<%# Bind("UseTimer") %>' ValidationGroup="insert" />
                    </p>
                    <p><span class="prop-label">Час на тест</span>
                    <asp:TextBox runat="server" ID="txtTimePerQuiz" CssClass="txtSmall" Text='<%# Bind("TimePerQuiz") %>' ValidationGroup="insert"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" ControlToValidate="txtTimePerQuiz" ValidationGroup="insert" ErrorMessage="Необхідно ввести час на проходження тесту">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator5" runat="server" ValidationGroup="insert" ControlToValidate="txtTimePerQuiz" Type="Integer" MaximumValue="86400" MinimumValue="60" ErrorMessage="Час для проходжння тесту від 60с до 24 год.">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Можна всього набрати</span>
                    <asp:TextBox runat="server" ID="txtMaxScores" CssClass="txtSmall" Text='<%# Bind("MaxScores") %>' ValidationGroup="insert"></asp:TextBox>  
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" ControlToValidate="txtMaxScores" ValidationGroup="insert" ErrorMessage="Максимальна кількість балів для тесту обовязкова">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator6" runat="server" ControlToValidate="txtMaxScores" ValidationGroup="insert" Type="Integer" MaximumValue="1000" MinimumValue="1" ErrorMessage="Максимальна кількість балів 1 до 1000">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Необхідно набрати</span>
                    <asp:TextBox runat="server" ID="txtScoreToPass" CssClass="txtSmall" Text='<%# Bind("ScoreToPass") %>' ValidationGroup="insert"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator10" runat="server" ControlToValidate="txtScoreToPass" ValidationGroup="insert" ErrorMessage="Необхідно ввести кількість балів">*</asp:RequiredFieldValidator>
                    <asp:RangeValidator ID="RangeValidator7" runat="server" ControlToValidate="txtScoreToPass" ValidationGroup="insert" Type="Integer" MaximumValue="1000" MinimumValue="1" ErrorMessage="Кількість балів для проходження від 1 до 1000">**</asp:RangeValidator>
                    </p>
                    <p><span class="prop-label">Активний</span>
                    <asp:CheckBox runat="server" ID="chkActive" Checked='<%# Bind("Active") %>' ValidationGroup="insert" />
                    </p>
                    <p><span class="prop-label">Зберігати відповіді користувача</span>
                    <asp:CheckBox runat="server" ID="chkSaveAnswers" Checked='<%# Bind("SaveUserAnswers") %>' ValidationGroup="insert" /></p>
                    <p><span class="prop-label">Дозволити міняти відповіді</span>
                    <asp:CheckBox runat="server" ID="chkAllowReAnswer" Checked='<%# Bind("AllowReAnswer") %>' />
                    </p>
                    <div id="validation-summary">
                        <asp:ValidationSummary ID="ValidationSummary2" runat="server" HeaderText="Виправте наступні помилки:" DisplayMode="List" ValidationGroup="insert" />
                    </div>
                    <div class="command-buttons">
                        <asp:LinkButton ID="btnInsert" runat="server" CommandName="Insert" CssClass="command-button" Text="Додати" ValidationGroup="insert" />
                        <asp:LinkButton ID="btnCancel" runat="server" CommandName="Cancel" CssClass="command-button" Text="Відмінити" />
                    </div>
                </div>
            </div>
        </InsertItemTemplate>
    </asp:ListView>
    
    <asp:ObjectDataSource ID="quizesObjSource" runat="server" DeleteMethod="Remove" 
        InsertMethod="Add" SelectMethod="GetBySubjectID" 
        TypeName="TestSystem.BLL.TestSystem.Quiz" 
        oninserting="quizesObjSource_Inserting">
        <DeleteParameters>
            <asp:Parameter Name="quizID" Type="Int32" />
        </DeleteParameters>
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="0" Name="subjectID" 
                QueryStringField="subjectID" Type="Int32" />
        </SelectParameters>
        <InsertParameters>
            <asp:Parameter Name="title" Type="String" />
            <asp:Parameter Name="description" Type="String" />
            <asp:Parameter Name="subjectID" Type="Int32" />
            <asp:Parameter Name="addedBy" Type="String" />
            <asp:Parameter Name="questionsCount" Type="Int32" />
            <asp:Parameter Name="useTimer" Type="Boolean" />
            <asp:Parameter Name="timePerQuiz" Type="Int32" />
            <asp:Parameter Name="scoreToPass" Type="Int32" />
            <asp:Parameter Name="active" Type="Boolean" />
            <asp:Parameter Name="saveUserAnswers" Type="Boolean" />
            <asp:Parameter Name="maxScores" Type="Int32" />
            <asp:Parameter Name="levelsPercentage" Type="String" />
        </InsertParameters>
    </asp:ObjectDataSource>
</div>
</asp:Content>

